/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：programmingInterface.js<br>
 * 日期：2018年1月29日<br>
 * 作者: 李伟利<br>
 * 功能：点击每个元器件，实现编程界面对话框<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 * 
 ******************************************************************************/
 window.makeNamespace(window,"Rainier.UI.V2");

 Rainier.UI.V2.ProgrammingDialog = Rainier.UI.V2.BaseDialog.extend({
 	
 	NAME : "Rainier.UI.V2.ProgrammingDialog",

 	/**
 	 * @名称   init
 	 * @功能   初始化打开实验对话框
 	 * @author 李伟利
 	 * @data   2017-07-15
 	 * @return {[type]}   [description]
 	 */
 	init : function(model){
 		var _this = this;
 		this.context = new Rainier.UI.V2.AppContext(this);
 		var dialogProperties = {
			    title : '自定义模块',
			    headerCls : "",
			    width : 500,
			    height: 500,
			    closed: false,
			    modal : true,
			    headerCls:"app-dialog-aceHeader",
			    bodyCls:"app-dialog-bodyAce",
			    iconCls:'icon-ace',
			    resizable : true,
			    buttons:[{
					text:'保存',
					handler:function(){
						_this.onClickConfirm();
					},
				},{
					text:'取消',
					handler:function(){
						_this.onClickCancel();
					}
				}]
		};
        this.AceViewPage  = null;
		this.expJsonObject = null;
		this.comFileBox    = null;
		this.expInfoComponent = null;
		this.contentFlag      = true;
		this.expName          = '';
        this.model = model;
		this._super(dialogProperties);
 	},

 	/**
 	 * @名称   createDialogComponents
 	 * @功能   初始化对话框时，执行该函数
 	 * @author 李伟利
 	 * @data   2017-07-15
 	 * @return {[type]}   [description]
 	 */
 	createDialogComponents : function(){
 		var _this = this;
 	    this.parent = new Rainier.UI.V2.UICompositeTabSupport(this.dialog,{fit:true,border:false});
 	    
 	    var tabProperty1 = {title:"编程界面",closable:false,border:true,resizeable:true,fit:true};
 	    this.AceViewPage = new Rainier.UI.V2.UICompositeTab(this.parent,tabProperty1);
 	    
 	    var tabProperty2 = {title:"使用说明",closable:false,border:true,resizeable:true,fit:true};
        this.UsingDictionary = new Rainier.UI.V2.UICompositeTab(this.parent,tabProperty2);
        
 		this.parent.select(0);

 		var Listener = Rainier.UI.V2.UIEventListener.extend({
 			NAME : "Listener",

 			init : function(){
 				this._super();
 			},

 			onEvent : function(sEvent,sourceObject,argsObjs){
 				 setTimeout( function(){
 				 	var editor = _this.aceViewPage.aceEditor.uic.editor;
                    editor.resize();
        		},10);
 			},
 		});

 		this.dialog.registerEventListener("onResize",new Listener());
 	},
 	/**
     * @名称   refresh
     * @功能   刷新编程界面的显示效果
     * @author 李伟利
     * @data   2017-07-15
     * @return {[type]}   [description]
     */
 	refresh : function(){
 	    this.aceViewPage  = new Rainier.UI.V2.AceViewPage(this.AceViewPage);
 	    this.AceUsingDictionaryViewPage = new Rainier.UI.V2.AceUsingDictionaryViewPage(this.UsingDictionary);
 	    this.AceUsingDictionaryViewPage.refresh(this.model);
 	    this.aceSaveDataRecover(this.aceViewPage); 
 	},
 	/**
 	 * @名称   onClickCancle
 	 * @功能   点击关闭按钮时，完成对对话框的关闭操作
 	 * @author 李伟利
 	 * @data   2017-07-15
 	 * @return {[type]}   [description]
 	 */
 	onClickCancel : function(){
		this.dialog.close();
 	},

 	/**
 	 * @名称   onClickConfirm
 	 * @功能   点击保存时，实现对数据的保存
 	 * @author 李伟利
 	 * @data   2017-07-15
 	 * @return {[type]}   [description]
 	 */
 	onClickConfirm : function(){
 		this.saveAceData();
 		this.dialog.close();
 	},
 	/**
 	 * @名称   onClickConfirm
 	 * @功能   点击保存时，实现对model的sm数据的保存
 	 * @author 李伟利
 	 * @data   2017-07-15
 	 * @return {[type]}   [description]
 	 */
 	saveAceData : function(){
        var aceTextValue  = this.aceViewPage.getContent();
        var property      = this.model.getProperty();
        var additional    = property.modelProperty.additional;
        var spiceModel    = additional.spiceModel;
        spiceModel.sm     = aceTextValue;
        this.model.property = property;
 	},
 	/**
 	 * @名称   aceSaveDataRecover
 	 * @功能   实现对ace编辑区数据的恢复
 	 * @author 李伟利
 	 * @data   2017-07-15
 	 * @return {[type]}   [description]
 	 */
 	aceSaveDataRecover : function(aceViewPage){
        var property      = this.model.getProperty();
        var additional    = property.modelProperty.additional;
        var spiceModel    = additional.spiceModel;
        var sm            = spiceModel.sm;
        if(sm === "Custom1(@1@)" || sm === "Custom2(@1@,@2@)"){
            //不做处理
        }else{
        	aceViewPage.setContent(sm);
        }
 	},
 });